home *** CD-ROM | disk | FTP | other *** search
/ The X-Philes (2nd Revision) / The X-Philes Number 1 (1995).iso / xphiles / hp48hor1 / roborun.src < prev    next >
Text File  |  1990-10-18  |  10KB  |  392 lines

  1. %%HP: T(3)A(D)F(.);
  2. @ by David Liu; this is shareware.
  3. @ This is part 1 of a two-part source-code listing.
  4. @   Part 2 is ROBORUN2.SRC.  -jkh-
  5. DIR
  6.   STRT
  7.     \<< RCLF 'USRF' STO 0 RDZ { # 4000103F0h # 0h } STOF # 83h # 40h PDIM
  8.       DO PICT { # 0h # 0h } STSCR REPL { # 0h # 0h } PVIEW 0
  9.         DO DROP 0 WAIT
  10.         UNTIL { 11.1 16.1 } SWAP POS DUP
  11.         END
  12.         IF 1 ==
  13.         THEN PLAY 1
  14.         ELSE INSTR 0
  15.         END
  16.       UNTIL
  17.       END
  18.     \>>
  19.   INSTR
  20.     \<< PICT { # 0h # 0h } INSC1 REPL INSS1 SNG 0 WAIT DROP
  21.         PICT { # 0h # 0h } INSC2 REPL INSS2 SNG 0 WAIT DROP
  22.         PICT { # 0h # 0h } INSC4 REPL INSS3 SNG 0 WAIT DROP
  23.         PICT { # 0h # 0h } INSC5 REPL INSS4 SNG 0 WAIT DROP
  24.         PICT { # 0h # 0h } INSC3 REPL INSS5 SNG 0 WAIT DROP
  25.     \>>
  26.   INSS1
  27. "2H1H8M6O1P1R8P8H2H8M2O2P2H1P1M1T9R"
  28.   INSS2
  29. "2H1H8M2O2P2M4T2P9Y4M1P1O1M6T1P1M4H4H1H8M"
  30.   INSS3
  31. "1H1H1H5M5T1R1Q1O5Y5T1R1Q1O5Y5T1R1Q1R7O"
  32.   INSS4
  33. "2H2H8J2J2R2Q2O2M1M1O1Q4O2J6L2H2H8J2J2R2Q2O2M6T6O"
  34.   INSS5
  35. "2H2H8J2J2R2Q2O2M1M1O1Q4O2J6L2T2T2Y2W4U1T2R2P4O2M6T1T1T8T"
  36.   BONS
  37. "1H1I1J1L3Q1L3Q1L6Q1Q1S1T1U1Q1S3U1P3S6Q"
  38.   EXP2
  39.     \<< 'SCOR' LEV 3 / 500 * STO+ UPSC
  40.     \>>
  41.   FLS
  42.     \<< 1 3
  43.       START 100 .3
  44. BEEP
  45.       NEXT
  46.     \>>
  47.   BFAIL
  48.     \<< REPL FLS 'SCOR' LEV 3 / 500 * STO- UPSC
  49.     \>>
  50.   EXPP
  51.     \<< EXPLG GXOR EXPS 'SCOR' LEV 3 / 500 * STO+ UPSC
  52.     \>>
  53.   EXPS
  54.     \<< 1 6
  55.       START 2000 .02 BEEP
  56.       NEXT 1 10
  57.       START RAND 90 * 80 + .03 BEEP
  58.       NEXT
  59.     \>>
  60.   BCHK
  61.     \<< 2 CF 3 CF 4 CF
  62.       WHILE KEY
  63.       REPEAT { 62 63 64 } SWAP POS DUP
  64.         IF
  65.         THEN 1 + SF
  66.         ELSE DROP
  67.         END
  68.       END
  69.       IF 2 FS?
  70.       THEN
  71.         IF 7 FS?
  72.         THEN { # 17h # 21h } { # 38h # 3Ah } LINE PICT { # 8h # 12h } EXPP
  73.         ELSE PICT { # Ah # 2Bh } DHG BFAIL
  74.         END
  75.       ELSE
  76.         IF 7 FS?
  77.         THEN PICT { # Ah # 2Bh } TMG BFAIL
  78.         ELSE EXP2
  79.         END
  80.       END
  81.       IF 3 FS?
  82.       THEN
  83.         IF 6 FS?
  84.         THEN { # 41h # 21h } { # 41h # 37h } LINE PICT { # 32h # 12h } EXPP
  85.         ELSE PICT { # 34h # 2Bh } DHG BFAIL
  86.         END
  87.       ELSE
  88.         IF 6 FS?
  89.         THEN PICT { # 34h # 2Bh } TMG BFAIL
  90.         ELSE EXP2
  91.         END
  92.       END
  93.       IF 4 FS?
  94.       THEN
  95.         IF 5 FS?
  96.         THEN { # 6Bh # 21h } { # 4Ah # 3Ah } LINE PICT { # 5Ch # 12h } EXPP
  97.         ELSE PICT { # 5Eh # 2Bh } DHG BFAIL
  98.         END
  99.       ELSE
  100.         IF 5 FS?
  101.         THEN PICT { # 5Eh # 2Bh } TMG BFAIL
  102.         ELSE EXP2
  103.         END
  104.       END
  105.     \>>
  106.   BONUS
  107.     \<< CLSCR PICT { # 1Ch # 18h } BNSSC REPL BONS SNG 1 10
  108.       FOR X CLSCR PICT { # 37h # 38h } BGUN REPL 1 3
  109.         FOR Z PICT BL RAND 8 * 1 + FLOOR 5 MIN DUP
  110.           IF 5 ==
  111.           THEN Z 4 + SF
  112.           ELSE Z 4 + CF
  113.           END GET
  114.         NEXT 0 WAIT DROP 440 .3 BEEP
  115.           { # 8h # 12h } SWAP REPL
  116.           { # 32h # 12h } SWAP REPL
  117.           { # 5Ch # 12h } SWAP REPL X INV 2 * .25 + WAIT 880 .3 BEEP BCHK 0
  118.         DO KEY
  119.         UNTIL DROP NOT
  120.         END
  121.       NEXT
  122.     \>>
  123.   PLAY
  124.     \<< 1 CF 0 'DEAD' STO 0 'LEV' STO 0 'SCOR' STO
  125.       PICT { # 0h # 0h } MNSC REPL UPSC
  126.       DO 'LEV' 1 STO+ UPLV INIP PLRB PLMN
  127.         DO MAIN
  128.         UNTIL DEAD DONE OR
  129.         END
  130.         IF LEV 3 MOD NOT DONE AND
  131.         THEN BONUS
  132.         END
  133.       UNTIL DEAD
  134.       END ENDG
  135.     \>>
  136.   INIP
  137.     \<< MEM DROP 0 'DONE' STO CLSCR
  138.         PICT { # 18h # Eh } INPBX REPL
  139.         PICT { # 50h # 20h } LEV 3 \->GROB REPL
  140.         0 'NROB' STO { } 'PILL' STO LEV .007 * .014 + 'PROB' STO
  141.       DO 0 125
  142.         FOR X 9 59
  143.           FOR Y
  144.             IF RAND PROB <
  145.             THEN X R\->B Y R\->B 2 \->LIST 'NROB' 1 STO+
  146.             END 5
  147.           STEP 5
  148.         STEP NROB
  149.       UNTIL 1 >
  150.       END NROB \->LIST 'ROBL' STO 0
  151.       DO KEY SWAP DROP
  152.       UNTIL NOT
  153.       END CLSCR
  154.     \>>
  155.   NROB 6
  156.   PROB .021
  157.   LEV 1
  158.   SCOR 100
  159.   ROBL { { # 19h # 27h } { # 23h # 22h } { # 28h # 27h } { # 32h # 22h }
  160.     { # 50h # 22h } { # 5Fh # 1Dh } }
  161.   MANL { # 28h # 22h }
  162.   PLRB
  163.     \<< ROBL LIST\-> 1 SWAP
  164.       START PICT SWAP ROBG REPL
  165.       NEXT
  166.     \>>
  167.   PLMN
  168.     \<< 0
  169.       DO DROP RAND 26 * 1 + FLOOR 5 * 5 - R\->B RAND 11 * 1 + FLOOR 5 * 4 +
  170.         R\->B 2 \->LIST DUP RC NOT
  171.       UNTIL
  172.       END DUP 'MANL' STO PICT SWAP MANG REPL 2 WAIT GO SNG
  173.     \>>
  174.   MAIN
  175.     \<<
  176.       IF KEY
  177.       THEN { 82 83 84 72 73 74 62 63 64 } SWAP POS
  178.         IF DUP
  179.         THEN
  180.           IF DUP 5 ==
  181.           THEN DROP TELE
  182.           ELSE \->STR "M" SWAP + STR\-> EVAL MOVM
  183.           END
  184.         END
  185.       END MOVR
  186.     \>>
  187.   CLSCR
  188.     \<< PICT { # 1h # Ah } # 83h # 37h BLANK REPL
  189.     \>>
  190.   UPLV
  191.     \<< PICT { # 78h # 0h } LEV \->STR 2 \->GROB REPL
  192.     \>>
  193.   UPSC
  194.     \<< PICT { # 24h # 0h } SCCS REPL PICT { # 24h # 0h } SCOR \->STR 2
  195.       \->GROB REPL
  196.     \>>
  197.   PC
  198.     \<< LIST\-> DROP 4 + SWAP 2 + SWAP 2 \->LIST PIX?
  199.     \>>
  200.   RC
  201.     \<< LIST\-> DROP 1 + SWAP 2 + SWAP 2 \->LIST PIX?
  202.     \>>
  203.   DEAD 1
  204.   DONE 0
  205.   DIE2 "5H2M9Q"
  206.   DIE1 "5H2H9M"
  207.   KEYL { 11.1 12.1 13.1 14.1 15.1 16.1 21.1 22.1 23.1 24.1 25.1 26.1 31.1 32.1
  208.     33.1 34.1 35.1 36.1 41.1 42.1 43.1 44.1 45.1 46.1 52.1 53.1 51.1 94.1 }
  209.   ALPHL { "A" "B" "C" "D" "E" "F" "G" "H" "I" "J" "K" "L" "M" "N" "O" "P" "Q"
  210.     "R" "S" "T" "U" "V" "W" "X" "Y" "Z" "\161" " " }
  211.   GETN
  212.     \<< 0
  213.       DO KEY
  214.       UNTIL SWAP DROP NOT
  215.       END PICT { # 0h # 9h } NMSCR REPL "" (-2.7,-1.1) \-> B
  216.       \<<
  217.         WHILE ALPHL KEYL 0 WAIT POS GET DUP "\161" == NOT
  218.         REPEAT \-> A
  219.           \<< A + PICT B A 2 \->GROB REPL (.6,0) 'B' STO+
  220.           \>>
  221.         END DROP
  222.       \>>
  223.     \>>
  224.   HSL { 8 6 4 2 "" }
  225.   ADJHS
  226.     \<< \-> A
  227.       \<< HS 1 A 1 - SUB SCOR HS  A 3 SUB + + 0 CHR + 'HS'  STO
  228.          HSL 1 A 1 - SUB LEV  HSL A 3 SUB + + 0 CHR + 'HSL' STO
  229.          HSN 1 A 1 - SUB GETN HSN A 3 SUB + + 0 CHR + 'HSN' STO
  230.       \>>
  231.     \>>
  232.   LOCS
  233. "2I1J2L6Q2G1I6J2L1N2P6V2N1P4Q4S4U2I1J2L6Q2S1U6V2L1L4U2S1L4U2S1L4V2U3S6Q"
  234.   HSN { "DAVID LIU" "DAVID LIU" "DAVID LIU" "DAVID LIU" "" }
  235.   HS { 103500 42600 22600 3100 "" }
  236.   ENDG
  237.     \<< PICT { # 0h # 9h } ENDSC REPL
  238.         DIE1 SNG .44 WAIT
  239.         DIE2 SNG 1 WAIT
  240.       IF SCOR HS 4 GET >
  241.       THEN 1 SF
  242.         CASE SCOR HS 1 GET >
  243.           THEN 1 ADJHS
  244.           END SCOR HS 2 GET >
  245.           THEN 2 ADJHS
  246.           END SCOR HS 3 GET >
  247.           THEN 3 ADJHS
  248.           END 1
  249.           THEN 4 ADJHS
  250.           END
  251.         END
  252.       END PICT { # 0h # 0h } LOCSC REPL 1 4
  253.       FOR C HS C GET \->STR " LEV " + HSL C GET \->STR + " " + HSN C GET + 2
  254.         \->GROB PICT SWAP # 0h # 5h C 12 * R\->B + 2 \->LIST SWAP REPL
  255.       NEXT
  256.       IF 1 FS?
  257.       THEN LOCS SNG
  258.       END USRF STOF 0
  259.       DO KEY SWAP DROP
  260.       UNTIL NOT
  261.       END 0 WAIT DROP
  262.     \>>
  263.   ZOOM
  264.     \<< 1 10
  265.       FOR X X 90 * .05 BEEP
  266.       NEXT
  267.     \>>
  268.   CHRG
  269. "1H1L1O3T1O4T"
  270.   SNG
  271.     \<< MEM DROP \-> A
  272.       \<< 1 A SIZE 2 /
  273.         FOR X A X 2 * 1 - DUP SUB A X 2 * DUP SUB NUM 65 - 12 / 2 SWAP ^ 110 *
  274.           SWAP STR\-> 11 / BEEP
  275.         NEXT
  276.       \>>
  277.     \>>
  278.   GO "5H5H5H8T"
  279.   PILL { }
  280.   RFL
  281.     \<< 'SCOR' 100 LEV * STO+ UPSC 6 1
  282.       FOR X X 10 * 30 + .05 BEEP -1
  283.       STEP \-> Z
  284.       \<< ROBL 1 Z 1 - SUB ROBL Z 1 + NROB SUB + 'ROBL' STO 'NROB' 1 STO-
  285.       \>>
  286.     \>>
  287.   TELE
  288.     \<< PICT MANL TELG REPL MANL RAND 26 * 1 + FLOOR 5 * 5 - R\->B RAND 11 * 1
  289.       + FLOOR 5 * 4 + R\->B 2 \->LIST 'MANL' STO CLSQ ZOOM
  290.       IF MANL RC MANL PC OR
  291.       THEN PICT MANL PILG REPL 1 'DEAD' STO
  292.       ELSE PICT MANL MANG REPL 'SCOR' 100 STO- UPSC
  293.       END
  294.     \>>
  295.   CKRB
  296.     \<< ROBL LIST\-> 1 CLSCR PICT MANL MANG REPL PILL LIST\-> DUP
  297.       IF
  298.       THEN 1 SWAP
  299.         START PICT SWAP PILG REPL
  300.         NEXT
  301.       ELSE DROP
  302.       END
  303.       FOR X \-> B
  304.         \<<
  305.           IF B RC
  306.           THEN X RFL ROBL B POS RFL PICT B PILG REPL B 1 \->LIST 'PILL' STO+
  307.           ELSE
  308.             IF B PC
  309.             THEN
  310.               IF B MANL ==
  311.               THEN 1 'DEAD' STO
  312.               END X RFL PICT B PILG REPL
  313.             ELSE PICT B ROBG REPL
  314.             END
  315.           END
  316.         \>> -1
  317.       STEP
  318.       IF NROB NOT
  319.       THEN 1 'DONE' STO CLSCR PICT { # 0h # 9h } LCSC REPL
  320.       PICT { # Eh # 1Fh } LEV 2 \->GROB REPL
  321.       PICT { # 61h # 25h } LEV 1000 * 2 \->GROB REPL
  322.       'SCOR' LEV 1000 * STO+ UPSC CHRG SNG 2 WAIT
  323.       END
  324.     \>>
  325.   MOVR
  326.     \<< ROBL 1 NROB
  327.       FOR X DUP X GET LIST\-> DROP MANL LIST\-> DROP \-> A B C D
  328.         \<<
  329.           IF A C >
  330.           THEN A # 5h -
  331.           ELSE
  332.             IF A C <
  333.             THEN A # 5h +
  334.             ELSE A
  335.             END
  336.           END
  337.           IF B D >
  338.           THEN B # 5h -
  339.           ELSE
  340.             IF B D <
  341.             THEN B # 5h +
  342.             ELSE B
  343.             END
  344.           END
  345.         \>> 2 \->LIST X SWAP PUT
  346.       NEXT 'ROBL' STO CKRB
  347.     \>>
  348.   M9
  349.     \<< MANL LIST\-> DROP B\->R 5 - 9 MAX R\->B SWAP B\->R 5 + 125 MIN R\->B
  350.       SWAP
  351.     \>>
  352.   M8
  353.     \<< MANL LIST\-> DROP B\->R 5 - 9 MAX R\->B
  354.     \>>
  355.   M7
  356.     \<< MANL LIST\-> DROP B\->R 5 - 9 MAX R\->B SWAP B\->R 5 - 0 MAX R\->B
  357.       SWAP
  358.     \>>
  359.   M6
  360.     \<< MANL LIST\-> DROP SWAP B\->R 5 + 125 MIN R\->B SWAP
  361.     \>>
  362.   M4
  363.     \<< MANL LIST\-> DROP SWAP B\->R 5 - 0 MAX R\->B SWAP
  364.     \>>
  365.   M3
  366.     \<< MANL LIST\-> DROP B\->R 5 + 59 MIN R\->B SWAP B\->R 5 + 125 MIN R\->B
  367.       SWAP
  368.     \>>
  369.   M2
  370.     \<< MANL LIST\-> DROP B\->R 5 + 59 MIN R\->B
  371.     \>>
  372.   M1
  373.     \<< MANL LIST\-> DROP B\->R 5 + 59 MIN R\->B SWAP B\->R 5 - 0 MAX R\->B
  374.       SWAP
  375.     \>>
  376.   CLSQ
  377.     \<< PICT SWAP CLG REPL
  378.     \>>
  379.   MOVM
  380.     \<< 2 \->LIST MANL CLSQ 'MANL' STO
  381.       IF MANL RC MANL PC OR
  382.       THEN PICT MANL PILG REPL 1 'DEAD' STO
  383.       ELSE PICT MANL MANG REPL
  384.       END
  385.     \>>
  386.   USRF { # 4000103F0h # 0h }
  387.   MC
  388.     \<< LIST\-> DROP 3 + SWAP 2 + SWAP 2 \->LIST PIX? NOT
  389.     \>>
  390.   PPAR { (-6.5,-3.1) (6.5,3.2) X 0 (0,0) FUNCTION Y }
  391. END
  392.